import { createRouter, createWebHistory } from 'vue-router'
import Login from '../views/Login.vue'
import AdminManagement from '../views/AdminManagement.vue'
import { ElMessage } from 'element-plus'

const routes = [
  {
    path: '/',
    redirect: '/admin'
  },
  {
    path: '/login',
    name: 'Login',
    component: Login,
    meta: { requiresAuth: false } // 登录页面不需要认证
  },
  {
    path: '/admin',
    name: 'AdminManagement',
    component: AdminManagement,
    meta: { requiresAuth: true } // 需要登录
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// 路由守卫 - 检查登录状态
router.beforeEach((to, from, next) => {
  // 获取token
  const token = localStorage.getItem('token')
  
  // 判断是否需要登录认证（默认需要，除非明确标记 requiresAuth: false）
  const requiresAuth = to.meta.requiresAuth !== false
  
  // 如果是登录页面
  if (to.path === '/login') {
    // 如果已经登录，重定向到管理页面
    if (token) {
      next('/admin')
      return
    }
    // 未登录，允许访问登录页面
    next()
    return
  }
  
  // 如果路由需要认证但用户未登录
  if (requiresAuth && !token) {
    ElMessage.warning('请先登录')
    // 保存要访问的路径，登录后可以跳转回去
    next({
      path: '/login',
      query: { redirect: to.fullPath }
    })
    return
  }
  
  // 如果路由需要认证且用户已登录，允许访问
  if (requiresAuth && token) {
    next()
    return
  }
  
  // 其他情况，允许访问
  next()
})

export default router
